package Thread;
/**等待一个线程join，
 * join可以要求多个线程之间，结束的先后顺序，
 * 例如主线程调用t.join，就是让主线程等待 t线程先结束*/
// 线程的休眠sleep,如果是sleep(0)意味着让当前线程立即放弃CPU资源，等待操作系统的调度
public class demo12 {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(()->{
            for (int i = 0;i < 500;i++) {
                System.out.println("hello thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
            System.out.println("t线程结束");
        });
        t.start();
        // t.join() 主线程一直等待
        // 主线程等待最多3000ms+50ns，如果没有结束，主线程继续执行
        // t线程会继续在后台运行直到完成所有的任务
        t.join(3000,50);
        System.out.println("main线程结束");
    }
}
